package top.glkj.hms.service;

import top.glkj.hms.entity.Role;
import top.glkj.hms.exception.DefineException;
import top.glkj.hms.utils.Result;

import java.util.List;
import java.util.Map;

/**
 * @author : xgl
 * @version : 0.0.1
 * @date :2020/11/23 23:44
 */
public interface RoleService extends BaseService<Role> {
    /**
     * 添加角色
     * @param role 角色
     * @return 修改结果
     */
    Result addRole(Role role);

    /**
     * 修改角色
     * @param role 角色
     * @return 结果
     */
    Result updateRole(Role role);


    /**
     * 分页查询
     *
     * @param page 当前页码
     * @param size 页面大小
     * @return page Role
     */
    Result getRolesByPageAndSize(int page, int size);

    /**
     * 分页条件查询
     *
     * @param page    当前页码
     * @param size    页面大小
     * @param argName 参数名
     * @param value   参数值
     * @return page User
     */
    Result getAllRolesByPageAndSizeAndArgs(int page, int size, String argName, String value);

    /**
     * 分页查询
     *
     * @param page 当前页码
     * @param size 页面大小
     * @param args 参数键值对
     * @return page User
     */
    Result getAllRolesByPageAndSizeAndAnyArgs(int page, int size, Map<String, String> args);

    /**
     * 角色添加权限
     * @param rid 角色id
     * @param pidList 权限id列表
     * @return 结果
     * @throws DefineException e
     */
    Result roleAddPermissions(long rid, List<Long> pidList) throws DefineException;

    /**
     * 角色修改权限
     * @param rid 角色id
     * @param pidList 权限id列表
     * @return 结果
     * @throws DefineException e
     */
    Result roleUpdatePermissions(long rid,List<Long> pidList) throws DefineException;

    /**
     * 角色移除权限
     * @param rid 角色id
     * @param pidList 移除id列表
     * @return 结果
     * @throws DefineException e
     */
    Result roleDeletePermissions(long rid,List<Long> pidList) throws DefineException;

    /**
     * 根据角色名称获取角色id
     * @param name 角色名称
     * @return 角色
     */
    Result getRoleByName(String name);
}
